package beer.zivelin.awesome.walawala.mobile.service;

import java.util.HashMap;
import java.util.Map;

public class T9Mapping {
    public static final String ANY_CHARACTER = "__ANY__";
    private static final T9Mapping instance = new T9Mapping();

    public static T9Mapping getInstance() {
        return instance;
    }

    protected Map<String, String> t9mappinng;

    public String toT9(char c) {
        String s = Character.toString(c);
        if (t9mappinng.containsKey(s)) {
            return t9mappinng.get(Character.toString(c));
        } else {
            return t9mappinng.get(ANY_CHARACTER);
        }
    }

    public String toT9(String sentence) {
        String t9 = "";
        for (char c : sentence.toCharArray()) {
            t9 += toT9(c);
        }
        return t9;
    }

    public T9Mapping() {
        t9mappinng = new HashMap<>();

        t9mappinng.put("1", "1");

        t9mappinng.put("2", "2");
        t9mappinng.put("a", "2");
        t9mappinng.put("A", "2");
        t9mappinng.put("b", "2");
        t9mappinng.put("B", "2");
        t9mappinng.put("c", "2");
        t9mappinng.put("C", "2");

        t9mappinng.put("3", "3");
        t9mappinng.put("d", "3");
        t9mappinng.put("D", "3");
        t9mappinng.put("e", "3");
        t9mappinng.put("E", "3");
        t9mappinng.put("f", "3");
        t9mappinng.put("F", "3");


        t9mappinng.put("4", "4");
        t9mappinng.put("g", "4");
        t9mappinng.put("G", "4");
        t9mappinng.put("h", "4");
        t9mappinng.put("H", "4");
        t9mappinng.put("i", "4");
        t9mappinng.put("I", "4");


        t9mappinng.put("5", "5");
        t9mappinng.put("j", "5");
        t9mappinng.put("J", "5");
        t9mappinng.put("k", "5");
        t9mappinng.put("K", "5");
        t9mappinng.put("l", "5");
        t9mappinng.put("L", "5");

        t9mappinng.put("6", "6");
        t9mappinng.put("m", "6");
        t9mappinng.put("M", "6");
        t9mappinng.put("n", "6");
        t9mappinng.put("N", "6");
        t9mappinng.put("o", "6");
        t9mappinng.put("O", "6");

        t9mappinng.put("7", "7");
        t9mappinng.put("p", "7");
        t9mappinng.put("P", "7");
        t9mappinng.put("q", "7");
        t9mappinng.put("Q", "7");
        t9mappinng.put("r", "7");
        t9mappinng.put("R", "7");
        t9mappinng.put("s", "7");
        t9mappinng.put("S", "7");

        t9mappinng.put("8", "8");
        t9mappinng.put("t", "8");
        t9mappinng.put("T", "8");
        t9mappinng.put("u", "8");
        t9mappinng.put("U", "8");
        t9mappinng.put("v", "8");
        t9mappinng.put("V", "8");

        t9mappinng.put("9", "9");
        t9mappinng.put("w", "9");
        t9mappinng.put("W", "9");
        t9mappinng.put("x", "9");
        t9mappinng.put("X", "9");
        t9mappinng.put("y", "9");
        t9mappinng.put("Y", "9");
        t9mappinng.put("z", "9");
        t9mappinng.put("Z", "9");

        t9mappinng.put("0", "0");

        t9mappinng.put(ANY_CHARACTER, "0");
    }

}
